package com.tbit.uqbike.client.pojo;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.sun.org.apache.xalan.internal.xsltc.runtime.InternalRuntimeError;
import com.tbit.uqbike.client.service.CouponService;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Objects;

/**
 * @Author: chen
 * @Description: 礼品卡
 * @Date: 创建于 9:38 2020/1/6
 */
@Slf4j
@Data
public class GiftCard {
    /** 礼品金 */
    @JsonIgnore
    private final Integer giftMoney = 0;
    /** 优惠券 */
    @JsonIgnore
    private final Integer coupon = 1;
    /**时长优惠券*/
    @JsonIgnore
    public static final Integer timeCoupon = 1;
    /**金额优惠券*/
    public static final Integer moneyCoupon = 0;

    /**
     * 礼品卡id
     */
    private Integer giftcardId;
    /**
     * 区域id
     */
    private Integer accountId;
    /**
     * 类型
     */
    private Integer cardType;
    /**
     * 礼品卡编号
     */
    private String cardNO;
    /**
     * 金额
     */
    private Integer money;
    /**
     * 关联的优惠券id，礼品卡类型为优惠券时不为空
     */
    private Integer couponId;
    /**
     * 优惠券数量，礼品卡类型为优惠券时不为空
     */
    private Integer couponCount;
    /**
     * 优惠券有效期（天），礼品卡类型为优惠券时不为空
     */
    private Integer couponExpireDays;
    /**
     * 失效日期
     */
    private String expireDate;
    /**
     * 创建时间
     */
    private String createTime;
    /**
     * 使用时间
     */
    private String useTime;
    /**
     * 使用用户id
     */
    private Integer userId;
    /**
     * 备注
     */
    private String remark;
    /**
     * 免押天数
     */
    private Integer memberFeeDays;
    /**
     * 券名称
     */
    private String cardName;
    /**
     * 单张优惠券面额 分
     */
    private Integer singletonCouponMoney;
    /**
     * 优惠券时长 分钟
     */
    private Integer minutes;
    /***
     * 单张优惠券优惠时间 分钟
     */
    private Integer singletonCouponMinute;

    /**
     * 格式化卡券信息
     */
    public void format(CouponService couponService){
        if (Objects.equals(cardType,giftMoney)){
            cardName = "礼品金";
        }
        if (Objects.equals(cardType,coupon)){
            Coupon couponCard = couponService.getByCouponId(couponId);
            if (Objects.isNull(couponCard)){
                log.error("未查id为{}的卡券",couponId);
                return;
            }
            cardName = String.format("优惠券\"%s\"",couponCard.getName());
            if (Objects.equals(couponCard.getCouponType(),moneyCoupon)){
                singletonCouponMoney = couponCard.getCouponMoney();
                money = new BigDecimal(couponCard.getCouponMoney()).multiply(new BigDecimal(couponCount)).setScale(2, RoundingMode.HALF_UP).intValue();
            }
            if (Objects.equals(couponCard.getCouponType(),timeCoupon)){
                singletonCouponMinute = couponCard.getCouponTime();
                minutes = new BigDecimal(couponCard.getCouponTime()).multiply(new BigDecimal(couponCount)).setScale(2, RoundingMode.HALF_UP).intValue();
            }
        }
    }

}
